<?php
    // +----------------------------------------------------------------------
    // | 海豚PHP框架 [ DolphinPHP ]
    // +----------------------------------------------------------------------
    // | 版权所有 2016~2017 河源市卓锐科技有限公司 [ http://www.zrthink.com ]
    // +----------------------------------------------------------------------
    // | 官方网站: http://dolphinphp.com
    // +----------------------------------------------------------------------
    // | 开源协议 ( http://www.apache.org/licenses/LICENSE-2.0 )
    // +----------------------------------------------------------------------

    namespace app\cms\admin;

    use app\admin\controller\Admin;
    use app\common\builder\ZBuilder;
    use app\cms\model\SliderPopup as SliderPopupModel;

    /**
     * 滚动图片控制器
     *
     * @package app\cms\admin
     */
    class SliderPopup extends Admin
    {

        /**
         * 轮播跳转列表
         * eturn mixed
         */
        public function index()
        {

            // 查询
            $map = $this->getMap();
            // 排序
            $order = $this->getOrder('update_time desc');
            // 数据列表
            $data_list = SliderPopupModel::where($map)->order($order)->paginate();
            // 使用ZBuilder快速创建数据表格
            return ZBuilder::make('table')->setSearch(['name' => '跳转名称'])// 设置搜索框
            ->addColumns([ // 批量添加数据列
                           ['id','ID'],
                           ['title','弹窗名称','text'],
                           ['image','展示图片','picture'],
                           ['url','跳转地址','text'],
                           ['status','状态','switch'],
                           ['create_time','创建时间','datetime'],
                           ['update_time','更新时间','datetime'],
                           ['right_button','操作','btn']
            ])->setTableName('cms_slider_type')->addTopButton('back',['href' => url('slider/index')])// 批量添加顶部按钮
            ->addTopButtons('add,enable,disable,delete')// 批量添加顶部按钮
            ->addRightButtons(['edit','delete' => ['data-tips' => '删除后无法恢复。']])// 批量添加右侧按钮
            ->addOrder('id,name,create_time,update_time')->setRowList($data_list)// 设置表格数据
            //->addValidate('sliderType', 'name')
            ->fetch(); // 渲染模板
        }

        /**
         * 新增
         *
         * @return mixed
         * @throws \think\Exception
         */
        public function add()
        {

            // 保存数据
            if ($this->request->isPost())
            {
                // 表单数据
                $data = $this->request->post();

                $data['app_id'] = env('app_id');
                if ($type = SliderPopupModel::create($data))
                {
                    // 记录行为
                    $this->success('新增成功','index');
                }
                else
                {
                    $this->error('新增失败');
                }
            }

            // 显示添加页面
            return ZBuilder::make('form')->setPageTips('如果出现无法添加的情况，可能由于浏览器将本页面当成了轮播跳转，请尝试关闭浏览器的轮播跳转过滤功能再试。','warning')->addFormItems([
                ['text','title','弹窗名称'],
                ['image','image','展示普通'],
                ['text','url','跳转地址'],
                ['radio','status','立即启用','',['否','是'],1]
            ])->fetch();
        }

        /**
         * 编辑
         *
         * @param null $id
         *
         * @return mixed
         * @throws \think\Exception
         */
        public function edit($id = null)
        {

            if ($id === null)
                $this->error('缺少参数');

            // 保存数据
            if ($this->request->isPost())
            {
                // 表单数据
                $data = $this->request->post();


                $data['app_id'] = env('app_id');
                if (SliderPopupModel::update($data))
                {
                    // 记录行为
                    $this->success('编辑成功','index');
                }
                else
                {
                    $this->error('编辑失败');
                }
            }

            $info = SliderPopupModel::get($id);

            // 显示编辑页面
            return ZBuilder::make('form')->setPageTips('如果出现无法编辑的情况，可能由于浏览器将本页面当成了轮播跳转，请尝试关闭浏览器的轮播跳转过滤功能再试。','warning')->addFormItems([
                ['hidden','id'],
                ['text','title','弹窗名称'],
                ['image','image','展示普通'],
                ['text','url','跳转地址'],
                ['radio','status','立即启用','',['否','是']]
            ])->setFormdata($info)->fetch();
        }

        /**
         * 删除轮播跳转跳转
         *
         * @param array $record 行为日志
         *
         * @author 蔡伟明 <314013107@qq.com>
         * @return mixed
         */
        public function delete($record = [])
        {

            return $this->setStatus('delete');
        }

        /**
         * 启用轮播跳转跳转
         *
         * @param array $record 行为日志
         *
         * @author 蔡伟明 <314013107@qq.com>
         * @return mixed
         */
        public function enable($record = [])
        {

            return $this->setStatus('enable');
        }

        /**
         * 禁用轮播跳转跳转
         *
         * @param array $record 行为日志
         *
         * @author 蔡伟明 <314013107@qq.com>
         * @return mixed
         */
        public function disable($record = [])
        {

            return $this->setStatus('disable');
        }

        /**
         * 设置轮播跳转跳转状态：删除、禁用、启用
         *
         * @param string $type   类型：delete/enable/disable
         * @param array  $record 日志记录
         *
         * @author 蔡伟明 <314013107@qq.com>
         * @return mixed
         */
        public function setStatus($type = '',$record = [],$Model = null)
        {

            $ids       = $this->request->isPost() ? input('post.ids/a') : input('param.ids');
            $type_name = SliderPopupModel::where('id','in',$ids)->column('name');
            return parent::setStatus($type,['slider_type_' . $type,'cms_slider_type',0,\think\facade\Env::get('UID'),implode('、',$type_name)]);
        }

        /**
         * 快速编辑
         *
         * @param array $record 行为日志
         *
         * @author 蔡伟明 <314013107@qq.com>
         * @return mixed
         */
        public function quickEdit($record = [])
        {

            $id      = input('post.pk','');
            $field   = input('post.name','');
            $value   = input('post.value','');
            $type    = SliderPopupModel::where('id',$id)->value($field);
            $details = '字段(' . $field . ')，原值(' . $type . ')，新值：(' . $value . ')';
            return parent::quickEdit(['slider_type_edit','cms_slider_type',$id,\think\facade\Env::get('UID'),$details]);
        }
    }